home *** CD-ROM | disk | FTP | other *** search
/ Aminet 38 / Aminet 38 (2000)(Schatztruhe)[!][Aug 2000].iso / Aminet / comm / irc / AVSearch.lha / AVSearch.Amirx next >
Encoding:
Text File  |  2000-06-10  |  3.1 KB  |  111 lines

  1. /* Search Altavista thru Amirc or CLI.  © 2000 by PurpleT. Requires HttpResume */
  2. /* Bug reports? suggestions? Mailto: purplet@dingoblue.net.au                  */
  3.  
  4. /*   P R E F S    A R E A  */
  5.  
  6.  
  7. MaxHits = 3
  8.  
  9. ShowLinkTitle    = "N"    /*    [ Y/N ] */
  10. ShowDescription  = "N"    /*    [ Y/N ] */
  11. ShowLastModified = "N"    /*    [ Y/N ] */
  12. ShowFileSize     = "N"    /*    [ Y/N ] */
  13.  
  14. SeparateOutput   = "N"    /*    [ Y/N ] */
  15. DeleteTempAfter  = "Y"    /*    [ Y/N ] */
  16.  
  17. AVSTempFile = "Ram:AVSTemp.html"
  18. HttpResumePath = "C:HttpResume"
  19.  
  20.  
  21. /*     E N D    P R E F S     */
  22.  
  23.  
  24.  
  25.  
  26. /* Don't Edit Anything Below This Point!! */
  27.  
  28. Options results
  29. parse arg SearchString;NL='0a'x;ES= d2c(27);Bold = d2c(2);TC = 1
  30.  
  31. CheckIt = getclip(AVSearch)
  32.  
  33. If CheckIt = "RUN" then DO
  34.    techo("Search already in progress. Wait for current search to finish.")
  35.    Exit
  36. End
  37.  
  38. Setclip(AVSearch,"RUN")
  39.  
  40. If SearchString = "" then DO
  41.    Techo("Usage: /RX AVSearch <Search Keywords>")
  42.    Call EndProg
  43. End
  44.  
  45. If exists(httpresumepath) = 0 then DO
  46.    Techo("Error: You need HttpResume to use this! :)")
  47.    Call EndProg
  48. End
  49.  
  50. Techo("Searching for "bold""SearchString""Bold" on AltaVista, MaxHits = "bold""MaxHits""bold", Please wait...")
  51.  
  52. SearchString2 = Translate(SearchString,"+"," ")
  53. If Exists(AVSTempFile) = 1 then Address command "delete >nil: "AVSTempFile
  54. address command httpresumepath' url = "http://www.altavista.com/cgi-bin/query?pg=q&sc=on&hl=on&act=2006&par=0&q='SearchString2'&search.x=21&search.y=6&kl=XX&stype=stext" OF = 'AVSTempFile' Referer = "http://www.altavista.com" >nil:'
  55.  
  56. If Exists(AVSTempFile) = 0 then DO
  57.    Techo("Error: File not found - "AVSTempFile)
  58.    Call EndProg
  59. End
  60.  
  61. Open(File1,AVSTempFile,"R")
  62.  
  63. If MaxHits > 10 then MaxHits = 10
  64.  
  65. Do i = 1 to MaxHits
  66.    HLine = readln(file1)
  67.    Do until HLine = "<b>"i". </b>"
  68.       HLine = ReadLn(File1)
  69.       If Find(HLine,"found no document matching your") ~=0 then DO
  70.          Techo("No matches found for "Bold""SearchString)
  71.          Call EndProg
  72.       End
  73.       If upper(HLine) = "</HTML>" then DO
  74.          Call EndProg
  75.       End
  76.    End
  77.    XT=Readln(File1);XT=Readln(File1)
  78.    ULine = Translate(SubStr(Readln(File1),14),"",""">")
  79.    techo(bold""i". "Bold""ULine)
  80.    XT=Readln(File1);XT=Readln(File1);XT=Readln(File1)
  81.    LinkTitle = ReadLn(File1);LinkTitle = SubStr(LinkTitle,4,Length(LinkTitle)-16)
  82.    Description = ReadLn(File1);Description = SubStr(Description,5)
  83.    XT=ReadLn(File1);XT=ReadLn(File1)
  84.    LastModified = ReadLn(File1)
  85.    FileSize = ReadLn(File1);FileSize = SubStr(Left(FileSize,Length(Filesize)-11),4)
  86.  
  87.    If upper(ShowLinkTitle) = "Y" then Techo(Bold"   "bold""LinkTitle)
  88.    If upper(ShowDescription) = "Y" then Techo(Bold"   "Bold""Description)
  89.    If upper(ShowLastModified) = "Y" then Techo(Bold"   "Bold""LastModified)
  90.    If upper(ShowFileSize) = "Y" then Techo(Bold"   "Bold""FileSize)
  91.    If Upper(SeparateOutput) = "Y" then Techo(Bold""Bold)
  92. End
  93. Call EndProg
  94. Exit
  95.  
  96. EndProg:
  97. Close(File1)
  98. Techo(Bold"Search Complete")
  99. SetClip(AVSearch,"")
  100. If Upper(DeleteTempAfter) = "Y" then DO
  101.    address command 'C:Delete >nil: 'AVSTempFile
  102. End
  103. Exit
  104. Return
  105.  
  106. Techo:
  107. parse arg EchoString
  108. "ECHO P="d2c(27)"b«AVSearch» C="TC" "EchoString
  109. say EchoString
  110. Return 0
  111.